//
//  LoadStatusListModel.swift
//  NSinaWeibo
//
//  Created by LoliQueen on 16/2/24.
//  Copyright © 2016年 LoliQueen. All rights reserved.
//

import UIKit
import AFNetworking
import SVProgressHUD

class LoadStatusListModel: NSObject {
    
    //数组模型
    lazy var status = [Status]()

    func loadHomeData(isPullUp:Bool,finished: (isSuccess: Bool) -> ()){
    
        //基地址省去https://api.weibo.com/
        let urlString = "2/statuses/home_timeline.json"
        guard let token = AccountViewModel.shareAccountViewModel.access_token else{
            SVProgressHUD.showErrorWithStatus("请登录")
            return
        }
        //给定since_id 会返回比since_id大的id微博
        var parameters = ["access_token":token]
        var since_id : Int64  = 0
        var max_id : Int64  = 0
        //当since_id、max_id同时存在的时候，只能处理一个
        if isPullUp{
            max_id = self.status.last?.id ?? 0
        }else{
            since_id = self.status.first?.id ?? 0
        }
        
        //添加到参数中
        if since_id > 0 {
            parameters["since_id"] = "\(since_id)"
        }
        if max_id > 0 {
            //加载更多，移除加载的第一条数据。避免微博重复
            parameters["max_id"] = "\(max_id-1)"
        }

        //手动显示 小菊花
        HTTPClient.sharedClient.requestJSONDict(.GET, urlString: urlString, parameters: parameters) { (dict, error) -> () in
            if error != nil{
                finished(isSuccess: false)
                return
            }
            //2.在字典中通过  "statuses"这个key 来去获取微博数组数据
            guard let array = dict!["statuses"] as? [[String : AnyObject]] else {
                finished(isSuccess: false)
                return
            }

            //实例化模型数据
            var tempArray = [Status]()
            //3.遍历数组 获取单个的字典对象
            for item in array {
                //4.字典转模型
                let s = Status(dict: item)
                //5.将模型数据添加到数组中
                tempArray.append(s)
            }
            
            //调试服务器在应对 since_id 和 max_id同时传递的情况下 如何处理
            print(tempArray)
            //记录临时数组
            if since_id > 0 {
                //在数组的前面进行添加的操作的操作
                self.status = tempArray + self.status
            } else if max_id > 0 {
                //上拉加载更多数据  追加数组数据
                self.status += tempArray
                //停止小菊花转动  不然只能获取一次更多数据
                //                self.indicatorView.stopAnimating()
            } else {
                //首次加载数据 下拉刷新数据
                self.status = tempArray
            }
            //执行成功的回调
            finished(isSuccess: true)
        }
    }
}
